A digital processor executes a sequence of instructions in order to perform a specific task. These instructions; any data used, manipulated, or produced as part of the task; and any other relevant information are stored in memory accessible to the processor. When executing a store instruction, the processor stores information in the memory. When executing a load instruction, the processor retrieves information from the memory and loads it into a register file. This register file includes registers specified in the instruction set architecture implemented by the processor.
An instruction refers to one or more addresses that specify particular memory location(s) relevant to execution of the instruction. For example, a store instruction refers to an address that specifies a memory location at which information is to be stored. A load instruction refers to an address that specifies a memory location from which information is to be retrieved.
For various reasons, including security, multi-programming, and others, instructions do not refer to actual physical addresses of the memory; that is, the actual addresses presented on an address bus that accesses the memory. Instead, instructions refer to so-called logical addresses of the memory, and a memory management unit between the processor and the memory translates logical addresses into physical addresses, and vice versa. The set of all logical addresses of a memory constitutes the logical address space of that memory.
A pointer is a data construct whose value is the logical address of another value stored elsewhere in memory. A pointer therefore references (i.e., points to) another value using that value's logical address. Convention dictates that a digital processor use pointers of a certain, fixed size, and that this size permits any given pointer to reference the full range of logical addresses in the memory's logical address space. For instance, a digital processor may use pointers that have a fixed size of 32 bits, which permits a pointer to reference any logical address in a memory that has a 4 Gigabyte (GB) logical address space.
Limiting a digital processor to use of pointers with one, fixed size of course simplifies the processor's instruction set architecture. However, the limitation also artificially increases the memory capacity and bandwidth required to store pointers. Even if a particular pointer does not need to reference the full range of the memory's logical address space, that pointer must still have the same, fixed size as another pointer that does need to reference the full range.